import { addRequest, addWs } from "../requestManager.js";
import { enumsResponse } from "./data.js";
const initData = [];
const NUM = 90000;
const PUSH_TIMES = 200;
for (let i = 0; i < NUM; i++) {
  initData.push({
    // 唯一标识
    id: i,
    broker: 1,
    // 买方净价
    bidCleanPrice: "1.11",
    // Bid +0 标识：0无, 1有
    bidCleanSpeed0Flag: 0,
    // Bid +1 标识：0无, 1有
    bidCleanSpeed1Flag: 1,
    // 买方全价
    bidDirtyPrice: "1.22",
    // Bid OCO 标识：0无, 1有
    bidOcoFlag: 1,
    // bid 价格请示符：0无, 1*, 2**
    bidPleaseFlag: 2,
    // 买方价
    bidPrice: "1.01",
    // 买方价
    bidPriceStd: 1.01,
    // 买方价格类型：1 到期收益率,2 行权收益率 3 净价 4 全价
    bidPriceType: 3,
    // 买方量
    bidVolume: "200",
    // Bid 整量标识：0无, 1有
    bidVolumeFlag: 1,
    // 买方量
    bidVolumeStd: 200,
    // 买方收益率
    bidYieldPrice: "1.001",
    // bid-中债
    bidPriceMinusCbValue: "1.1001",
    // 买入标准价
    bidPriceStandard: "1.2002",
    // 买入标准量
    bidVolumeStandard: "300",
    // 债券名称
    bondChiShortName: i ? "19国开06" : "19国开05",
    // 债券代码
    bondCode: i ? "190206" : "190205",
    // 债券内码
    bondInnerCode: "10157074",
    // 债项评级
    bondRating: "AA" + i,
    // 中债到期估值收益率
    cbEndYtm: "1.0100",
    // 中债行权估值收益率
    cbOptionYtm: "1.0200",
    // 休几
    holidayDays: 1,
    // 主体评级
    issuerRating: "BB",
    // 卖方净价
    ofrCleanPrice: "2.01",
    // Ofr +0 标识：0无, 1有
    ofrCleanSpeed0Flag: 1,
    // Ofr +1 标识：0无, 1有
    ofrCleanSpeed1Flag: 0,
    // 卖方全价
    ofrDirtyPrice: "2.101",
    // Ofr OCO 标识：0无, 1有
    ofrOcoFlag: 1,
    // ofr 价格请示符：0无, 1*, 2**
    ofrPleaseFlag: 1,
    // 卖方价
    ofrPrice: "",
    // 卖方价
    ofrPriceStd: 2.22,
    // 卖方价格类型：1 到期收益率,2 行权收益率 3 净价 4 全价
    ofrPriceType: 4,
    // 卖方量
    ofrVolume: "400",
    // Ofr 整量标识：0无, 1有
    ofrVolumeFlag: 0,
    // 卖方量
    ofrVolumeStd: 400,
    // 卖方收益率
    ofrYieldPrice: "1.11",
    // ofr-中债
    ofrPriceMinusCbValue: "2.223",
    // 卖出标准价
    ofrPriceStandard: "2.244",
    // 卖出标准量
    ofrVolumeStandard: "350",
    // 是否含权债
    isOption: 1,
    // 剩余期限
    tenor: "20D",
    // 剩余期限(D)
    tenorDays: "20D",
    // issuerType
    issuerType: "PRIVATE_N",
    // 票面利率
    floatingRate: "0.112",
    // 更新时间
    updateTime: Date.now() - i - 5,
  });
}

addRequest(
  { method: "POST", path: "/ls-xayah/broker-quote/list" },
  function ({ body }) {
    console.log("----收到请求---------- /ls-xayah/broker-quote/list ");

    return {
      code: "0",
      msg: "success",
      data: {
        total: initData.length,
        dataList: initData,
      },
      requestId: "0",
    };
  }
);

addRequest(
  {
    method: "GET",
    path: "/qtrade_bond_secondary/api/market/common/template/enums",
  },
  function () {
    return enumsResponse;
  }
);

addWs("/topic/ls-xayah/broker/quote", function (ws, req) {
  console.log("收到订阅", req.url);
  let sendFlag = true;
  function send() {
    if (!sendFlag) {
      return;
    }
    const fn = () => {
      const ID = Math.floor(NUM * Math.random());
      ws.send(
        JSON.stringify({
          // 唯一标识
          id: ID,
          broker: 1,
          // 买方净价
          bidCleanPrice: (Math.random() * 4).toFixed(2),
          // Bid +0 标识：0无, 1有
          bidCleanSpeed0Flag: 0,
          // Bid +1 标识：0无, 1有
          bidCleanSpeed1Flag: 1,
          // 买方全价
          bidDirtyPrice: (Math.random() * 4).toFixed(2),
          // Bid OCO 标识：0无, 1有
          bidOcoFlag: 1,
          // bid 价格请示符：0无, 1*, 2**
          bidPleaseFlag: 2,
          // 买方价
          bidPrice: (Math.random() * 4).toFixed(2),
          // 买方价
          bidPriceStd: (Math.random() * 4).toFixed(2),
          // 买方价格类型：1 到期收益率,2 行权收益率 3 净价 4 全价
          bidPriceType: 3,
          // 买方量
          bidVolume: (Math.random() * 1000).toFixed(0),
          // Bid 整量标识：0无, 1有
          bidVolumeFlag: 1,
          // 买方量
          bidVolumeStd: +(Math.random() * 1000).toFixed(0),
          // 买方收益率
          bidYieldPrice: (Math.random() * 4).toFixed(2),
          // bid-中债
          bidPriceMinusCbValue: "1.1001",
          // 买入标准价
          bidPriceStandard: (Math.random() * 4).toFixed(2),
          // 买入标准量
          bidVolumeStandard: +(Math.random() * 1000).toFixed(0),
          // 债券名称
          bondChiShortName: ID ? "19国开06" : "19国开05",
          // 债券代码
          bondCode: ID ? "190206" : "190205",
          // 债券内码
          bondInnerCode: "10157074",
          // 债项评级
          bondRating: "AA" + ID,
          // 中债到期估值收益率
          cbEndYtm: "1.0100",
          // 中债行权估值收益率
          cbOptionYtm: "1.0200",
          // 休几
          holidayDays: 1,
          // 主体评级
          issuerRating: "BB",
          // 卖方净价
          ofrCleanPrice: (Math.random() * 4).toFixed(2),
          // Ofr +0 标识：0无, 1有
          ofrCleanSpeed0Flag: 1,
          // Ofr +1 标识：0无, 1有
          ofrCleanSpeed1Flag: 0,
          // 卖方全价
          ofrDirtyPrice: (Math.random() * 4).toFixed(2),
          // Ofr OCO 标识：0无, 1有
          ofrOcoFlag: 1,
          // ofr 价格请示符：0无, 1*, 2**
          ofrPleaseFlag: 1,
          // 卖方价
          ofrPrice: (Math.random() * 4).toFixed(2),
          // 卖方价
          ofrPriceStd: +(Math.random() * 4).toFixed(2),
          // 卖方价格类型：1 到期收益率,2 行权收益率 3 净价 4 全价
          ofrPriceType: 4,
          // 卖方量
          ofrVolume: +(Math.random() * 1000).toFixed(0),
          // Ofr 整量标识：0无, 1有
          ofrVolumeFlag: 0,
          // 卖方量
          ofrVolumeStd: +(Math.random() * 1000).toFixed(0),
          // 卖方收益率
          ofrYieldPrice: (Math.random() * 4).toFixed(2),
          // ofr-中债
          ofrPriceMinusCbValue: "2.223",
          // 卖出标准价
          ofrPriceStandard: (Math.random() * 4).toFixed(2),
          // 卖出标准量
          ofrVolumeStandard: +(Math.random() * 1000).toFixed(0),
          // 是否含权债
          isOption: 1,
          // 剩余期限
          tenor: "20D",
          // 剩余期限(D)
          tenorDays: "20D",
          // issuerType
          issuerType: "PRIVATE_N",
          // 票面利率
          floatingRate: "0.112",
          // 更新时间
          updateTime: Date.now(),
        })
      );
      send();
    };
    //
    setTimeout(fn, 0);  // 1s只能执行 65~75次
    setTimeout(fn, 0);
    // setTimeout(fn, 0);
    // setTimeout(fn, 0);
    // setTimeout(fn, 0);
  }

  send();
  ws.on("close", () => {
    sendFlag = false;
    console.log("订阅关闭");
  });
});
